/* 电子科大本部食堂的饭卡有一种很诡异的设计，即在购买之前判断余额。如果购买一个商品之前，卡上的剩余金额大于或等于5元，就一定可以购买成功（即使购买后卡上余额为负），否则无法购买（即使金额足够）。所以大家都希望尽量使卡上的余额最少。
某天，食堂中有n种菜出售，每种菜可购买一次。已知每种菜的价格以及卡上的余额，问最少可使卡上的余额为多少。
*/
#include<iostream>
#include<algorithm>
#include<numeric>
#include<cstring>
using namespace std;
const int maxn = 1006;
const int INF = 0x3f3f3f3f;
int dish[maxn];
int dp[maxn];
int n, m;
int ans = 0;
int main() {
  while(cin>>n) {
    if(n==0) break;
    for(int i=0; i<n; ++i) cin>>dish[i];
    cin>>m;
    if(m<5) {
      cout<<m<<'\n';
      continue;
    }
    m -= 5;
    memset(dp, 0, sizeof(dp));
    ans = 0;
    sort(dish, dish+n);
    for(int i=0; i<n-1; ++i) { // for each dish
                             // To buy or not to buy, that is dp.
      for(int j=m; j>=0; --j) {
        if(j<dish[i]) {      // j元不足当前价格
          ans = max(ans, dp[j]+dish[i]);
        }
        else { // 足够, 正常dp
          dp[j] = max(dp[j], dp[j-dish[i]]+dish[i]);
        }
      }
    }
    // 此时dp[m]中保存了能花掉的最大钱数, 账户余额为...
    ans = max(ans, dp[m]);
    cout<<m+5-dp[m]-dish[n-1]<<'\n';
  }
}
